Windows Forms - Utilização do NameSpace Math
A namespace Math é um ponte que casa o Framework e o processador aritimético do sistema.
Por exemplo, a função SENO está gravada no processador aritimético (um dos núcleos do processador) e no
NameSpace Math ele chama a funcionalidade do processador e interfaceia o resultado com o framework.
As funções dentro da NameSpace Math são :
Função |
Cálculo efetuado |
sqrt |
Raiz quadrada (square root) |
round |
Arredonda o número seguindo o critério maior/menor que 5 |
log |
Calcula o log do número ( na base 10) |
pi |
Valor de Pi |
abs |
Valor absoluto do número (retira sinal -) - Módulo do número |
sin,cos,tan |
Calcula o seno, cosseno ou a tangende do número |
asin,acos,atan |
Calcula ângulo cujo seno, cosseno ou a tangende dá o valor especificado |
bigmul |
Multiplica 2 números de 32 bits |
ceiling |
Retorna o valor inteiro menor ou igual ao especificado |
divrem |
Faz a operação inversa da divisão, ou seja, fornecidos o divisor, dividendo e o resto
ele retorna o número que gerou esse resultado na divisão.
|
exp |
Calcula e elevado ao expoente especidicado - e é o número de Euler e é um número irracional
próximo de 2,718281828459045235360287.
|
IEEERemainder |
Retorna o resto da Divisão
|
max |
Retorna o maior número
|
min |
Retorna o menor número
|
pow(x,y) |
Calcula quanto é x elevado a y
|
round |
Arredonda o número
|
sign |
Retorna o sinal do número - retorna -1 se for menor que zero, 0 se for 0, 1 se for maior que 0
|
Truncate |
Elimina a parte fracionária do número sem levar em conta o valor da parte fracionária
|
Exemplos
Imports System.Math
Module Objeto_Math
' o módulo não pode chamar Math porque Math é o nome da biblioteca
Public Sub OperacoesMatematicascomObjeto()
' operações matematicas
Dim MeuValor As Double
MeuValor = Math.Sqrt(81) ' Raiz quadrada - MeuValor = 9.0
MeuValor = Math.Round(42.889, 2) ' Arredondamento - MeuValor = 42.89
MeuValor = Math.Log(24.212) ' Logaritimo base 10 - MeuValor = 3.18..
MeuValor = Math.PI ' Pi - MeuValor = 3.14..
MeuValor = Math.Abs(-10) ' Valor absoluto ou módulo - MeuValor = 10.0
'Abs(Decimal), Abs(Double), Abs(Int16),Abs(Int32),Abs(Int64),Abs(SByte),Abs(Single)
MeuValor = Math.Acos(2) ' devolve o arco cujo cosseno tem valor 2
MeuValor = Math.Asin(2) ' devolve o arco cujo seno tem valor 2
MeuValor = Math.Atan(2) ' devolve o arco cuja tangente tem valor 2
MeuValor = Math.Atan2(2, 3) ' devolve o arco cuja tangente tem valor de 2 / 3
MeuValor = Math.BigMul(234, 2334) ' multiplica 2 números de 32 bits
MeuValor = Math.Ceiling(10.23) ' Retorna o inteiro maior ou igual ao parametro
' Ceiling(Decimal), Ceiling(Double)
MeuValor = Math.Cos(3) ' devolve o cosseno do angulo 3 radianos
MeuValor = Math.Cosh(3) ' devolve o cosseno hiperbólico do angulo 3 radianos
Dim dividendo As System.Int32 = 51
Dim divisor As System.Int32 = 3
Dim resto As System.Int32 = 0
MeuValor = Math.DivRem(dividendo, divisor, resto)
' DivRem(Int32, Int32, Int32), DivRem(Int64, Int64, Int64)
Dim expoente = Math.Exp(3) ' devolve e elevado a 3 potencia ( e= 2.1718...)
MeuValor = Math.Floor(10.23) ' Retorna o inteiro menor ou igual ao parametro
' Floor(Decimal), Floor(Double)
MeuValor = Math.IEEERemainder(10, 3) ' Retorna o resto da divisão ( ambos double )
MeuValor = Math.Log(2) ' devolve log de 2 na base e ( double )
MeuValor = Math.Log(2, 4) ' devolve log de 2 na base 4 ( double )
MeuValor = Math.Log10(2) ' devolve log de 2 na base 10 ( double )
Dim varByte As Byte
varByte = Math.Max(5, 9) ' retorna o maior número...no caso 9
'Max(Byte, Byte), Max(Decimal, Decimal), Max(Double, Double), Max(Int16, Int16), Max(Int32, Int32), Max(Int64, Int64)
'Max(SByte, SByte), Max(Single, Single), Max(UInt16, UInt16), Max(UInt32, UInt32), Max(UInt64, UInt64),
varByte = Math.Min(5, 9) ' retorna o menor número...no caso 5
'Min(Byte, Byte), Min(Decimal, Decimal), Min(Double, Double), Min(Int16, Int16), Min(Int32, Int32),
'Min(Int64, Int64), Min(SByte, SByte), Min(Single, Single), Min(UInt16, UInt16), Min(UInt32, UInt32),
'Min(UInt64, UInt64)
varByte = Math.Pow(2, 3) ' retorna 2 elevado a 3 potencia
varByte = Math.Round(2.2345) ' arredondamento
'Round(Decimal), Round(Double), Round(Decimal, Int32), Round(Decimal, MidpointRounding),
'Round(Double, Int32), Round(Double, MidpointRounding), Round(Decimal, Int32, MidpointRounding),
'Round(Double, Int32, MidpointRounding)
varByte = Math.Sign(2.3) ' retorna -1 se for menor que zero, 0 se for 0, 1 se for maior que 0
'Sign(Decimal), Sign(Double),Sign(Int16), Sign(Int32), Sign(Int64), Sign(SByte), Sign(Single)
MeuValor = Math.Sin(2) ' devolve o seno do angulo 2 rads
MeuValor = Math.Sinh(2) ' devolve o seno hiperbólico do angulo 2 rads
MeuValor = Math.Sqrt(2) ' devolve a raiz quadrada de 2
MeuValor = Math.Tan(2) ' devolve a tangente do angulo 2 rads
MeuValor = Math.Tanh(2) ' devolve o tangente hiperbólica do angulo 2 rads
MeuValor = Math.Truncate(2.3434343) ' devolve a parte inteira do número
'Truncate(Decimal), Truncate(Double)
MeuValor = Math.E ' devolve o valor de e ( 2.1718....)
MeuValor = Math.PI ' devolve o valor de Pi ( 3.1415....)
End Sub
Como fazer uma divisão seguindo regras matemáticas
Public Sub ExecutaDivisao()
'IsNegativeInfinity,IsPositiveInfinity, IsNaN
Dim a As Double
Dim b As Double
Dim res As Double
a = InputBox("Digite o primeiro Número")
b = InputBox("Digite o segundo Número")
res = a / b
If Double.IsInfinity(res) Then
If Double.IsNegativeInfinity(res) Then
MsgBox("O resultado encontrado é um número pequeno")
Else
If Double.IsPositiveInfinity(res) Then
MsgBox("O resultado é um número muito grande")
Else
If Double.IsNaN(res) Then
MsgBox("O resultado encontrado não é um valor numérico")
End If
End If
End If
Else
MsgBox("O resultado da divisão é " + res.ToString)
End If
End Sub
Os limites das variáveis
Infinito
No framework o infinito pode ser infinito positivo ou infinito negativo.
Public Sub ExibeInfinito()
Dim dbl As Double = 999
Dim inf As Double
inf = dbl / 0
MsgBox(inf) ' exibe +Infinito
Dim large As Double = 1.0E+299
Dim small As Double = 1.0E-299
Dim res As Double
res = large / small
MsgBox(res) ' exibe +Infinito
End Sub
End Module